package br.com.condominio.view.beans;

import java.sql.SQLException;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

import br.com.condominio.controller.FuncionarioController;
import br.com.condominio.util.Data;
import br.com.condominio.view.vo.FuncionarioVO;

@ManagedBean(name = "funcionarioMBean")
@SessionScoped
public class FuncionarioMBean extends SessionMBean {

	// Controller para acesso ao DAO
	private final FuncionarioController controller;

	public FuncionarioMBean() throws ClassNotFoundException, SQLException {
		controller = new FuncionarioController();
	}

	private FuncionarioVO funcionarioVO = new FuncionarioVO();
	private DataModel<FuncionarioVO> listagemFuncionarios;

	public FuncionarioVO getFuncionarioVO() {
		return funcionarioVO;
	}

	public void setFuncionarioVO(FuncionarioVO FuncionarioVO) {
		this.funcionarioVO = FuncionarioVO;
	}

	public String salvar() throws SQLException, ClassNotFoundException {
		String retorno = "../erro";
		try {

			funcionarioVO.setHorarioEntrada(new Data(funcionarioVO
					.getHoraEntrada()));
			funcionarioVO
					.setHorarioSaida(new Data(funcionarioVO.getHoraSaida()));

			if (funcionarioVO.getCodFuncionario() == 0) {
				if (controller.criar(funcionarioVO)) {
					retorno = "listagem_funcionarios";
				}
			} else {
				if (controller.atualizar(funcionarioVO)) {
					retorno = "listagem_funcionarios";
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return retorno;
	}

	public DataModel<FuncionarioVO> getListagemFuncionarios()
			throws SQLException, ClassNotFoundException {

		List<FuncionarioVO> lista = controller.getAllFuncionarios();
		listagemFuncionarios = new ListDataModel<FuncionarioVO>(lista);
		return listagemFuncionarios;
	}

	public void setFistagemFuncionarios(DataModel<FuncionarioVO> funcionarios) {
		this.listagemFuncionarios = funcionarios;
	}

	public String excluir() throws SQLException, ClassNotFoundException {
		String retorno = "erro";

		if (controller.excluir(funcionarioVO)) {
			retorno = "listagem_funcionarios";
		}
		return retorno;
	}

	public void insert() {
		funcionarioVO = new FuncionarioVO();
	}

	public void selecionar() {
		funcionarioVO = listagemFuncionarios.getRowData();
	}
}